#include<bits/stdc++.h>
using namespace std;
int T,wxd,cnt,n,m,a[1000010],b[1000010],c[100010],s,s1,s2,s3,x[4],ans[100010],p;
int main(){
    freopen("arena.in","r",stdin);
    freopen("arena.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	for(int i=1;i<=m;i++){
		scanf("%d",&b[i]);
	}
	if(n<=8&&n>4){
		s=36;
		scanf("%d%d%d",&s1,&s2,&s3);
	}
	if(n<=4&&n>2){
		s=10;
		scanf("%d%d",&s1,&s2);
	}
	if(n<=2&&n>1){
		s=3;
		scanf("%d",&s1);
	}
	if(n==1){
		cout<<1;
		return 0;
	}
	scanf("%d",&T);
	while(T--){
		scanf("%d%d%d%d",&x[0],&x[1],&x[2],&x[3]);
		for(int i=1;i<=n;i++){
			a[i]=a[i]^(x[i%4]);
		}
	}
	if(n<=8&&n>4){
		for(int i=1;i<=n;i++){
			if(i%2==s1) c[++cnt]=i;
			else s-=i;
		}
		for(int i=1;i<=cnt;i++){
			if(i%2==s2) c[++wxd]=c[i];
			else s-=i;
		}
		for(int i=1;i<=wxd;i++){
			if(a[c[i]]<3) {
				s-=a[c[i]];
				for(int j=1;j<=c[i];j++) ans[j]=s;
			}
		}
	}
	if(n<=4&&n>2){
		for(int i=1;i<=n;i++){
			if(i%2==s1) c[++cnt]=i;
			else s-=i;
		}
		for(int i=1;i<=cnt;i++){
			if(a[c[i]]<2) {
				s-=a[c[i]];
				for(int j=1;j<=c[i];j++) ans[j]=s;
			}
		}
	}
	if(n<=2&&n>1){
		if(s1==0){
			if(a[1]<1) ans[1]=ans[2]=0;
			else ans[1]=ans[2]=1;
		}
		if(s2==0){
			if(a[2]<1) ans[1]=ans[2]=0;
			else ans[1]=ans[2]=2;
		}
	}
	for(int i=1;i<=m;i++){
		p^=i*ans[i];
		printf("%d\n",p);
	}
    return 0;
}
